// #include <iostream>
// #include<string>
// #include<functional>
//
// using namespace std;
// //仿函数 重载括号运算符
// //让类名或者结构体名模仿函数的调用行为： 函数名(参数)
// struct Sum
// {
//     int operator()(const int& a,const int& b)
//     {
//         return a+b;
//     }
// };
//
// void test_functional()
// {
//     Sum obj;
//     cout <<  "显示调用" << obj.operator()(1,2) << endl;
//     cout << "隐式调用" << obj(1,2) << endl;
//     cout << "匿名对象调用" << Sum{}(1,2) << endl;
// }
//
// //sort 算法
// namespace my
// {
//     template<typename Ty,typename Pr>
//     void sort(Ty array[],int size)
//     {
//         for (int i=0;i<size;i++)
//         {
//             for (int j=0;j<size-i-1;j++)
//             {
//                 if (Pr{}(array[j],array[j+1])==false)
//                 {
//                     Ty temp = array[j];
//                     array[j] = array[j+1];
//                     array[j+1] = temp;
//                 }
//             }
//         }
//     }
//
//     template<typename ty>
//     struct less
//     {
//         bool operator()(const ty& one,const ty& two)const
//         {
//             return one < two;
//         }
//     };
//     template<typename ty>
//     struct greater
//     {
//         bool operator()(const ty& one,const ty& two)const
//         {
//             return one > two;
//         }
//     };
// }
//
// void test_sort()
// {
//     int arr[5] = {3,2,1,4,6};
//     my::sort<int,my::less<int>>(arr,5);
//     for (auto& v:arr)
//     {
//         cout << v << endl;
//     }
//     my::sort<int,my::greater<int>>(arr,5);
//
// }
//
//
// void test_std_functional()
// {
//   //关系---比较准则
//     cout << greater<int>{}(1,2) << endl;
//     cout << less<int>{}(1,2) << endl;
//     cout << greater_equal<int>{}(1,2) << endl;
//     //算术类的
//     cout << plus<int>{}(1,2) << endl;
//     //位运算
//     cout << bit_and<int>{}(1,2) << endl;
//
//     //逻辑运算
//     cout << logical_and<int>{}(1,2) << endl;
//
// }
//
//
// int main()
// {
//
//     // test_functional();
//
//     // test_std_functional( );
//     test_sort();
//     return 0;
// }